Spring Boot Uygulaması Docker ile Nasıl Çalıştırılır? Adım Adım Rehber

Spring Boot uygulamasını Docker ile çalıştırmak, projeyi farklı ortamlarda daha kolay dağıtmanın ve tutarlı şekilde çalıştırmanın en pratik yollarından biridir.

Bu rehberde Spring Boot uygulamasını Docker ile uyumlu hale getirip çalıştırmayı adım adım ele alacağız. Dockerfile oluşturma, image build etme ve container üzerinden uygulamayı çalıştırma süreçlerini sade bir dille inceleyeceğiz.

Kısa özet: Spring Boot projesi oluşturacağız, Dockerfile yazacağız, Docker image üreteceğiz ve uygulamayı container içinde çalıştıracağız.

Spring Boot Uygulamasını Docker ile Çalıştırmak Neden Önemli?

Spring Boot projeleri geliştirme ortamında sorunsuz çalışsa bile farklı sunuculara taşındığında ortam farklarından dolayı sorun çıkarabilir. Docker bu problemi azaltır çünkü uygulamayı bağımlılıklarıyla birlikte paketler ve her ortamda benzer şekilde çalıştırılmasını sağlar.

Bu yaklaşım özellikle geliştirme, test ve production süreçlerinde büyük kolaylık sağlar. Aynı image farklı makinelerde çalıştırılabildiği için dağıtım süreci daha hızlı ve daha güvenilir hale gelir.

Spring Boot Projesi Oluşturma

İlk adım olarak bir Spring Boot projesi oluşturmamız gerekir. Bunun için Spring Initializr kullanabiliriz.

Proje oluştururken temel bağımlılık olarak Spring Web eklemek yeterlidir. Böylece örnek bir endpoint yazarak uygulamayı hızlıca test edebiliriz.

İpucu: Basit bir demo için yalnızca Spring Web bağımlılığı yeterlidir. Daha sonra ihtiyaca göre Spring Data, Security veya Actuator gibi bağımlılıklar eklenebilir.

Dockerfile Oluşturma

Proje oluşturulduktan sonra uygulamanın bulunduğu dizinde bir Dockerfile oluşturmalıyız. Docker, image üretirken bu dosyadaki talimatları okuyarak çalışır.

Dosya adının tam olarak Dockerfile olması gerekir. Bu dosya içine uygulamanın hangi temel image üzerinden çalışacağı, hangi dosyanın container içine kopyalanacağı ve hangi komutun çalıştırılacağı yazılır.

FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

Bu örnekte temel bir Java image kullanılıyor, uygulama dosyası container içine kopyalanıyor ve uygulama 8080 portu üzerinden ayağa kaldırılıyor.

Örnek Controller Yazma

Uygulamanın gerçekten çalıştığını görmek için basit bir controller yazabiliriz. Böylece container ayağa kalktıktan sonra tarayıcı üzerinden endpoint’e erişip sonucu test edebiliriz.

@RestController
public class HelloController {

    @GetMapping("/")
    public String index() {
        return "Spring Boot Docker demo çalışıyor";
    }
}

Bu endpoint uygulama başarıyla çalıştığında tarayıcıda düz metin olarak cevap dönecektir.

Docker Image Oluşturma

Dockerfile hazır olduktan sonra proje dizininde terminal açarak image oluşturabiliriz.

docker build -t dockerdemo -f Dockerfile .

Bu komutta:

  • docker build image oluşturur.
  • -t dockerdemo image adına etiket verir.
  • -f Dockerfile kullanılacak dosyayı belirtir.
  • . mevcut dizini build context olarak kullanır.

Build işlemi tamamlandıktan sonra image’ın oluşup oluşmadığını kontrol etmek için aşağıdaki komut çalıştırılır:

docker images

Bu komut sistemde bulunan tüm Docker image’larını listeler. Eğer işlem başarılıysa listede dockerdemo image’ını görebilirsiniz.

Docker Container Çalıştırma

Image oluşturulduktan sonra artık uygulamayı container olarak çalıştırabiliriz.

docker run -p 9990:8080 dockerdemo

Bu komutta host makinedeki 9990 portu ile container içindeki 8080 portu eşleştirilir. Yani uygulama container içinde 8080 portunda çalışırken siz tarayıcıdan 9990 portu üzerinden erişirsiniz.

Tarayıcıya localhost:9990 yazarak uygulamanın ayağa kalktığını test edebilirsiniz.

Pratik bilgi: Eğer Spring Boot uygulamanız varsayılan olarak 8080 portunda çalışıyorsa, Docker tarafında farklı bir dış port kullanarak çakışmaları önleyebilirsiniz.

Sık Yapılan Hatalar

  • Dockerfile dosya adını yanlış yazmak
  • Jar dosyasını build etmeden Docker image oluşturmaya çalışmak
  • Yanlış port eşleştirmesi yapmak
  • Container içindeki jar yolunu yanlış belirtmek
  • Proje dizinini yanlış konumdan build etmek

Özellikle en sık karşılaşılan hata, Spring Boot projesini önce package etmeden Docker build komutunu çalıştırmaktır. Jar dosyası oluşmadan COPY adımı doğru şekilde çalışmaz.

Daha Temiz ve Güvenli Kullanım İçin Öneriler

Temel örnekler öğrenmek için idealdir ancak gerçek projelerde Dockerfile yapısını biraz daha iyileştirmek faydalı olur.

  • Daha küçük base image kullanarak image boyutunu azaltın.
  • Multi-stage build ile gereksiz dosyaları final image içine almayın.
  • Production ortamında environment variable kullanımını tercih edin.
  • Uygulama loglarını container dışından izlenebilir hale getirin.

Sık Sorulan Sorular

Spring Boot uygulamasını Docker ile neden çalıştırmalıyım?

Çünkü Docker, uygulamayı bağımlılıklarıyla birlikte paketler ve farklı ortamlarda daha tutarlı çalışmasını sağlar.

Dockerfile zorunlu mu?

Evet. Klasik Docker image üretim sürecinde hangi adımların uygulanacağını belirtmek için Dockerfile kullanılır.

docker build -t ne işe yarar?

Build edilen image’a bir isim ve etiket vermek için kullanılır.

docker run -p 9990:8080 ne anlama gelir?

Host makinedeki 9990 portunu container içindeki 8080 portuna yönlendirir.

Sonuç

Bu rehberde bir Spring Boot uygulamasını Docker ile nasıl çalıştıracağımızı adım adım inceledik. Önce projeyi oluşturduk, sonra Dockerfile hazırladık, image build ettik ve son olarak container üzerinden uygulamayı ayağa kaldırdık.

Eğer Spring Boot projelerinizi daha taşınabilir, daha kolay dağıtılabilir ve daha düzenli hale getirmek istiyorsanız Docker kullanmak güçlü bir adımdır.

Etiketler: spring boot docker, dockerfile, docker run, docker build, java docker

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Devops ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *